package ar.edu.unlam.lyc.analizadorLexico;

public class Token {
	public String token;
	public boolean identificador = false;
	public boolean constanteE = false;
	public boolean constanteR = false;
	public boolean constanteS = false;
	public boolean reservada = false;
	public String mnemonic;
	public String otros = "-";
	public boolean declarado = false;
	public boolean utilizado = false;

	public static String cadenaFormatoTS = "id\tnombre\t\ttipo\totros\n";

	public boolean equals(Object o) {
		if (this.token.equals((((Token) o).token))) {
			return true;
		}
		return false;
	}

	public boolean equals(String str) {
		if (this.token == str) {
			return true;
		}
		return false;
	}

	public String toString() {
		String modificador = "";
		if (this.identificador) {
			modificador = "id: ";
		}
		if (this.reservada) {
			modificador = "rsv: ";
		}
		return "< " + modificador + this.token + " >";
	}

	public String toStringMN() {
		return "< " + this.mnemonic + " >";
	}

	public String toStringTS() {
		String tipo = "";
		if (this.esConstanteE()) {
			tipo = "cte_e";
		}
		if (this.esConstanteR()) {
			tipo = "cte_r";
		}
		if (this.esConstanteS()) {
			tipo = "cte_s";
		}
		if (this.esIdentificador()) {
			tipo = "id";
		}
		if (this.token.length() > 6) {
			return this.token.substring(0, 7) + "\t" + tipo + "\t" + otros;
		}
		return this.token + "\t\t" + tipo + "\t" + otros;

	}

	public boolean esIdentificador() {
		return this.identificador;
	}

	public boolean esConstanteS() {
		return this.constanteS;
	}

	public boolean esConstanteR() {
		return this.constanteR;
	}

	public boolean esConstanteE() {
		return this.constanteE;
	}

}
